#include <pthread.h>#include <stdio.h>#include <unistd.h>#include <semaphore.h>static char g_buf[1000];//static int g_hasData = 0;//全局变量阻塞static sem_t g_sem;static void* my_thread_func(void * data){	while(1)	{		//等待信号量		sem_wait(&g_sem);		//接收到通知后打印		printf("recv: %s\n",g_buf);	}	return NULL;}int main(){	pthread_t tid;//线程的ID	int ret;		sem_init(&g_sem,0,0);//信号量初始化（g_sem,线程(0)/进程(1)，阻塞(0)/运行(1)）		/* 1、创建“接收线程” */		// pthread_create（线程ID，属性,线程运行函数，函数参数）		// void *(*start_routine) (void *) ：返回值和参数都是void指针的 函数指针 	ret = pthread_create(&tid, NULL,my_thread_func, NULL);	if(ret){printf("pthread_create err!\n");}	/* 2、主线程读取标准输入，发给“接收线程” */	while(1)	{		fgets(g_buf, 999, stdin);		//通知接收线程		sem_post(&g_sem);//唤醒信号量	}	return 0;}